package com.superman.supermarket.client.composite.sku.pop.prop;

import java.util.Map;

import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Widget;
import com.superman.mvpframe.client.utils.StringUtils;
import com.superman.mvpframe.client.widget.toggle.ToggleList;

/**
 * 单个sku属性选择器
 * 
 * @author superman
 * @version 2017年1月11日上午10:26:11
 */
public class PropFlowCell extends ToggleList {

	interface PropFlowCellUiBinder extends UiBinder<Widget, PropFlowCell> {
	}

	private static PropFlowCellUiBinder uiBinder = GWT.create(PropFlowCellUiBinder.class);

	@UiField
	FlowPanel fp, fp2;
	private boolean hasDefaultSelect; // 是否有默认选中

	@UiField
	HTML proname;

	/**
	 * 构造方法
	 * 
	 * @author superman
	 * @version 2018年8月4日 下午11:04:29
	 */
	public PropFlowCell() {
		initWidget(uiBinder.createAndBindUi(this));
	}

	/**
	 * 植入数据
	 * 
	 * @author superman
	 * @version 2018年8月4日 下午11:04:27
	 * @param map
	 * @param prop
	 */
	public void setData(Map<String, Object> map, String prop) {
		// {SKU_PID=211, SKU_VALUES=[{"SKU_VNAME":"M", "SKU_VID":"5015"},{"SKU_VNAME":"L",
		// "SKU_VID":"5016"}], SKU_PNAME=尺码}
		proname.setText(String.valueOf(map.get("SKU_PNAME")));

		String skuPid = String.valueOf(map.get("SKU_PID"));

		JSONArray skuValues = (JSONArray) map.get("SKU_VALUES");

		for (int i = 0; i < skuValues.size(); i++) {
			String skuVname = skuValues.get(i).isObject().get("SKU_VNAME").isString().stringValue();
			String skuVid = skuValues.get(i).isObject().get("SKU_VID").isString().stringValue();

			final String key = skuPid + ":" + skuVid;

			final PropButton propButton = new PropButton();
			propButton.setPropKey(key);
			propButton.setPropValue(skuVname);
			fp2.add(propButton);
			this.addItemToDict(propButton);

			if (!StringUtils.isEmpty(prop) && prop.indexOf(key) > -1) {
				// propButton.select();
				hasDefaultSelect = true;
				PropFlowCell.this.select(propButton);
			}
		}

		// 没有默认选中属性时,默认选中第一个
		if (!hasDefaultSelect) {
			PropFlowCell.this.selectByIndex(0);
		}

	}

}
